class Solution {
public:
    int myAtoi(string s) 
    {
        // 删除前导空格
        int left = 0;
        while (left < s.size() && s[left] == ' ') {
            left++;
        }

        bool flag = true; // 代表正数
        int ret = 0;
        if(s[left] == '-') flag = false;
        if(s[left] == '-' || s[left] == '+') left++;
        for (int i = left; i < s.size(); i++) {
            if (s[i] >= '0' && s[i] <= '9') {
                // 检查是否会溢出
                if (ret > (INT_MAX - (s[i] - '0')) / 10) {
                    return flag ? INT_MAX : INT_MIN; // 溢出处理
                }
                ret = ret * 10 + (s[i] - '0');
            } else {
                // 不是合格的字符
                break;
            }
        }
        return flag ? ret : -ret;
    }
};
